package com.sg.dto.integration.app;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Objects;

/**
 * @desc KeyFocusDto
 * @使用场景
 */
@Data
public class KeyFocusDto extends BaseDto implements Serializable {

    /**
     * 重点关注ID
     */
    @ApiModelProperty("重点关注ID")
    private String keyFocusId;

    /**
     * 重点关注内容ID
     */
    @ApiModelProperty("重点关注内容ID")
    private String keyFocusContentId;

    /**
     * 重点关注内容表类型编码 OMS_TARGET_OBJECTIVE:指标 OMS_TASK:工作任务 OMS_QUESTION:问题
     */
    @ApiModelProperty("重点关注内容表类型编码")
    private String keyFocusContentTypeCode;

    /**
     * 重点关注内容名称
     */
    @ApiModelProperty("重点关注内容名称")
    private String keyFocusContentName;

    /**
     * 关注主体ID
     */
    @ApiModelProperty("关注主体ID")
    private String focusObjectId;

    /**
     * 关注主体表类型编码 OMS_FRAMEWORK_ORIGINAL_ROLE_MEMBER:身份人员 OMS_ORG_DEPT:部门 OMS_ORG_ORGANIZATION:组织
     */
    @ApiModelProperty("关注主体表类型编码")
    private String focusObjectTypeCode;

    /**
     * 主题内容ID
     */
    @ApiModelProperty("主题内容ID")
    private String themeContentId;

    /**
     * 主题内容表类型编码
     */
    @ApiModelProperty("主题内容表类型编码")
    private String themeContentTypeCode;

    /**
     * 排序
     */
    @ApiModelProperty("排序")
    private Long orderNumber;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        KeyFocusDto that = (KeyFocusDto) o;
        return (
                keyFocusId == that.keyFocusId &&
                        keyFocusContentId == that.keyFocusContentId &&
                        keyFocusContentTypeCode == that.keyFocusContentTypeCode &&
                        keyFocusContentName == that.keyFocusContentName &&
                        focusObjectId == that.focusObjectId &&
                        focusObjectTypeCode == that.focusObjectTypeCode &&
                        themeContentId == that.themeContentId &&
                        themeContentTypeCode == that.themeContentTypeCode &&
                        orderNumber == that.orderNumber
        );
    }

    @Override
    public int hashCode() {
        return Objects.hash(
                super.hashCode(),
                keyFocusId,
                keyFocusContentId,
                keyFocusContentTypeCode,
                keyFocusContentName,
                focusObjectId,
                focusObjectTypeCode,
                themeContentId,
                themeContentTypeCode,
                orderNumber
        );
    }

}
